package nl.uva.science.pico.picolanguage;

abstract public class AbstractType extends aterm.pure.ATermApplImpl {
  protected aterm.ATerm term;

  private nl.uva.science.pico.picolanguage.Factory abstractTypeFactory;

  public AbstractType(nl.uva.science.pico.picolanguage.Factory abstractTypeFactory, aterm.ATermList annos, aterm.AFun fun, aterm.ATerm[] args) {
    super(abstractTypeFactory.getPureFactory(), annos, fun, args);
    this.abstractTypeFactory = abstractTypeFactory;
  }

  abstract public aterm.ATerm toTerm();

  public String toString() {
    return toTerm().toString();
  }

  protected void setTerm(aterm.ATerm term) {
    this.term = term;
  }

  public nl.uva.science.pico.picolanguage.Factory getPicoLanguageFactory() {
    return abstractTypeFactory;
  }

  public boolean isSortNormal() {
    return false;
  }

  public boolean isSortEscaped() {
    return false;
  }

  public boolean isSortStrCon() {
    return false;
  }

  public boolean isSortBoolCon() {
    return false;
  }

  public boolean isSortNatCon() {
    return false;
  }

  public boolean isSortTYPE() {
    return false;
  }

  public boolean isSortPICOID() {
    return false;
  }

  public boolean isSortSTATEMENTS() {
    return false;
  }

  public boolean isSortDECLARATIONS() {
    return false;
  }

  public boolean isSortPROGRAM() {
    return false;
  }

  public boolean isSortDECLS() {
    return false;
  }

  public boolean isSortIDTYPE() {
    return false;
  }

  public boolean isSortSTATEMENT() {
    return false;
  }

  public boolean isSortEXP() {
    return false;
  }

  public boolean isSortSTATEMENTList() {
    return false;
  }

  public boolean isSortIDTYPEList() {
    return false;
  }

}
